import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

/**
 * @author Zhang Guangyong
 * @desacription 文件深度提取器
 * @date 2019年11月21日 13:47
 */
public class FileExtract {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        while (true) {
            List<String> keyWord = new ArrayList<>();
            System.out.println("请输入根文件夹：");
            String root = scanner.next();
            System.out.println("请输入目标文件夹：");
            String toPath = scanner.next();
            System.out.println("请选择处理模式：1 模板模式 2 自定义模式");
            String model = scanner.next();
            if ("1".equals(model)) {
                System.out.println("请输入想要提取的文件 编号：");
                System.out.println("0:所有 1:视频 2:音频 3:word 4:excel 5:epub 6:图片");
                String line = scanner.next();
                switch (line) {
                    case "0":
                        break;
                    case "1":
                        keyWord.add("mp4");
                        keyWord.add("mkv");
                        break;
                    case "2":
                        keyWord.add("mp3");
                        keyWord.add("wav");
                        break;
                    case "3":
                        keyWord.add("doc");
                        keyWord.add("docx");
                        break;
                    case "4":
                        keyWord.add("xls");
                        keyWord.add("xlsx");
                        break;
                    case "5":
                        keyWord.add("epub");
                        break;
                    case "6":
                        keyWord.add("jpg");
                        keyWord.add("png");
                        keyWord.add("bmp");
                        keyWord.add("jepg");
                        break;
                    default:
                        System.out.println("错误输入，请重输：");
                        continue;
                }
                List<File> filePaths = new ArrayList<>();
                FileUtil.deepFind(root, Integer.parseInt(line), keyWord, filePaths);
                if (filePaths.size() == 0) {
                    System.out.println("未找到文件！");
                } else {
                    FileUtil.filesMove(filePaths, toPath);
                }
                System.out.println("");
                System.out.println("处理完成");
            } else if ("2".equals(model)) {
                System.out.println("请输入想要提取的文件后缀：（多个用 , 分隔)");
                String keys = scanner.next();
                String[] split = keys.split(",");
                keyWord.addAll(Arrays.asList(split));

                List<File> filePaths = new ArrayList<>();
                FileUtil.deepFind(root, 2, keyWord, filePaths);
                if (filePaths.size() == 0) {
                    System.out.println("未找到文件！");
                } else {
                    FileUtil.filesMove(filePaths, toPath);
                }
                System.out.println("");
                System.out.println("处理完成");
            } else {
                System.out.println("输入错误！ 请重试");
            }
        }
    }


}
